package com.gmail.blackdog1987.carcare.util;

import android.os.Handler;
import android.view.KeyEvent;

/**
 * 
 * @author 董国超
 *
 */
public class DoubleClickDetector {

	/** 默认双击间隔毫秒 */
	public static final long DEFAULT_INTERVAL_MS = 2000L;

	/** 消息：点击 */
	private static final int MESSAGE_CLICK = 0x01;

	private long mInterval = DEFAULT_INTERVAL_MS; // 双击间隔毫秒
	private DoubleClickListener mListener; // 双击监听器

	private Handler mHandler = new Handler();

	/**
	 * 创建。
	 * 
	 * @param interval 双击间隔毫秒，默认为 {@link DEFAULT_INTERVAL_MS}。
	 * @param listener 双击监听器。
	 */
	public DoubleClickDetector(long interval, DoubleClickListener listener) {
		mInterval = interval;
		mListener = listener;
	}

	public boolean onKey(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_BACK) {
			if (mHandler.hasMessages(MESSAGE_CLICK)) {
				mHandler.removeMessages(MESSAGE_CLICK);
				mListener.onDoubleClick();
			} else {
				mListener.onClick();
				mHandler.sendEmptyMessageDelayed(MESSAGE_CLICK, mInterval);
			}
		}
		return false;
	}

	/**
	 * 取消。
	 */
	public void cancel() {
		if (mHandler.hasMessages(MESSAGE_CLICK)) {
			mHandler.removeMessages(MESSAGE_CLICK);
		}
	}

	/**
	 * 双击监听器。
	 */
	public interface DoubleClickListener {

		/**
		 * 点击时执行。
		 */
		void onClick();

		/**
		 * 双击时执行。
		 */
		void onDoubleClick();
	}

}
